home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Info 1994 March
/
Internet Info CD-ROM (Walnut Creek) (March 1994).iso
/
networking
/
mail
/
mh
/
updates
/
MH.6.7.1
< prev
next >
Wrap
Text File
|
1990-12-13
|
31KB
|
1,082 lines
Prereq: patch.0
*** ../mh-6.7-dist/./Patchlevel Thu Apr 12 13:31:00 1990
--- ./Patchlevel Fri Dec 14 09:17:57 1990
***************
*** 1 ****
! MH.6.7 patch.0
--- 1 ----
! MH.6.7 patch.1
*** ../mh-6.7-dist/./uip/replsbr.c Thu Apr 12 13:29:36 1990
--- ./uip/replsbr.c Mon Nov 5 11:38:46 1990
***************
*** 1,6 ****
/* replsbr.c - routines to help repl along... */
#ifndef lint
! static char ident[] = "@(#)$Id: replsbr.c,v 1.6 90/04/05 14:59:43 sources Exp $";
#endif lint
#include "../h/mh.h"
--- 1,6 ----
/* replsbr.c - routines to help repl along... */
#ifndef lint
! static char ident[] = "@(#)$Id: replsbr.c,v 1.9 90/11/05 11:38:43 mh Exp $";
#endif lint
#include "../h/mh.h"
***************
*** 85,91 ****
char *cp;
int format_len;
register char **ap;
- struct comp **used_buf_fp;
(void) umask( ~ m_gmprot() );
if ((out = fopen (drft, "w")) == NULL)
--- 85,90 ----
***************
*** 94,113 ****
cp = new_fs (form ? form : replcomps, NULLCP, NULLCP);
format_len = strlen (cp);
ncomps = fmt_compile (cp, &fmt) + 1;
! nxtbuf = compbuffers = (char **)calloc((unsigned)ncomps,sizeof(char *));
! if (nxtbuf == NULL)
adios (NULLCP, "unable to allocate component buffers");
! used_buf_fp = used_buf =
! (struct comp **)calloc((unsigned)(ncomps+1),sizeof(struct comp *));
! if (used_buf == NULL)
adios (NULLCP, "unable to allocate component buffer stack");
! used_buf += ncomps+1; *--used_buf = 0;
for (i = ncomps; i--; )
if ((*nxtbuf++ = malloc( SBUFSIZ )) == NULL)
adios (NULLCP, "unable to allocate component buffer");
! nxtbuf = compbuffers;
! savecomp = used_buf;
tmpbuf = *nxtbuf++;
for (ap = addrcomps; *ap; ap++) {
--- 93,113 ----
cp = new_fs (form ? form : replcomps, NULLCP, NULLCP);
format_len = strlen (cp);
ncomps = fmt_compile (cp, &fmt) + 1;
! if ((nxtbuf = compbuffers = (char **)
! calloc((unsigned)ncomps,sizeof(char *)))
! == (char **)NULL)
adios (NULLCP, "unable to allocate component buffers");
! if ((savecomp = used_buf = (struct comp **)
! calloc((unsigned)(ncomps+1),sizeof(struct comp *)))
! == (struct comp **)NULL)
adios (NULLCP, "unable to allocate component buffer stack");
! savecomp += ncomps + 1;
! *--savecomp = (struct comp *)0; /* point at zero'd end minus 1 */
for (i = ncomps; i--; )
if ((*nxtbuf++ = malloc( SBUFSIZ )) == NULL)
adios (NULLCP, "unable to allocate component buffer");
! nxtbuf = compbuffers; /* point at start */
tmpbuf = *nxtbuf++;
for (ap = addrcomps; *ap; ap++) {
***************
*** 232,243 ****
/* return dynamically allocated buffers */
free (scanl);
! while ( cptr = *savecomp++ )
! free (cptr->c_text);
! for (nxtbuf = compbuffers, i = ncomps; i--; )
! free (*nxtbuf++);
free ((char *) compbuffers);
! free ((char *) used_buf_fp);
}
/* */
--- 232,244 ----
/* return dynamically allocated buffers */
free (scanl);
! for (nxtbuf = compbuffers, i = ncomps;
! cptr = *savecomp++; nxtbuf++, i--)
! free (cptr->c_text); /* if not nxtbuf, nxtbuf already freed */
! while ( i-- > 0)
! free (*nxtbuf++); /* free unused nxtbufs */
free ((char *) compbuffers);
! free ((char *) used_buf);
}
/* */
*** ../mh-6.7-dist/./uip/rcvdist.c Thu Apr 12 13:29:36 1990
--- ./uip/rcvdist.c Mon Nov 5 13:50:16 1990
***************
*** 1,6 ****
/* rcvdist.c - a rcvmail program to distribute messages */
#ifndef lint
! static char ident[] = "@(#)$Id: rcvdist.c,v 1.4 90/04/05 14:59:35 sources Exp $";
#endif lint
#include "../h/mh.h"
--- 1,6 ----
/* rcvdist.c - a rcvmail program to distribute messages */
#ifndef lint
! static char ident[] = "@(#)$Id: rcvdist.c,v 1.6 90/11/05 13:50:14 mh Exp $";
#endif lint
#include "../h/mh.h"
***************
*** 175,181 ****
char *cp,
*scanl,
name[NAMESZ];
- struct comp **used_buf_fp;
register struct comp *cptr,
**savecomp;
FILE *out;
--- 175,180 ----
***************
*** 186,208 ****
cp = new_fs (form ? form : rcvdistcomps, NULLCP, NULLCP);
format_len = strlen (cp);
ncomps = fmt_compile (cp, &fmt) + 1;
! nxtbuf = compbuffers = (char **) calloc ((unsigned) ncomps,
! sizeof (char *));
! if (nxtbuf == NULL)
adios (NULLCP, "unable to allocate component buffers");
! used_buf = (struct comp **) calloc ((unsigned) (ncomps + 1),
! sizeof (struct comp *));
! if (used_buf == NULL)
adios (NULLCP, "unable to allocate component buffer stack");
! used_buf_fp = used_buf;
! used_buf += ncomps + 1;
! *--used_buf = 0;
for (i = ncomps; i--;)
if ((*nxtbuf++ = malloc (SBUFSIZ)) == NULL)
adios (NULLCP, "unable to allocate component buffer");
-
nxtbuf = compbuffers;
- savecomp = used_buf;
tmpbuf = *nxtbuf++;
for (ap = addrcomps; *ap; ap++) {
--- 185,205 ----
cp = new_fs (form ? form : rcvdistcomps, NULLCP, NULLCP);
format_len = strlen (cp);
ncomps = fmt_compile (cp, &fmt) + 1;
! if ((nxtbuf = compbuffers = (char **)
! calloc ((unsigned) ncomps, sizeof (char *)))
! == (char **)NULL)
adios (NULLCP, "unable to allocate component buffers");
! if ((savecomp = used_buf = (struct comp **)
! calloc ((unsigned) (ncomps + 1), sizeof (struct comp *)))
! == (struct comp **) NULL)
adios (NULLCP, "unable to allocate component buffer stack");
! savecomp += ncomps + 1;
! *--savecomp = 0;
!
for (i = ncomps; i--;)
if ((*nxtbuf++ = malloc (SBUFSIZ)) == NULL)
adios (NULLCP, "unable to allocate component buffer");
nxtbuf = compbuffers;
tmpbuf = *nxtbuf++;
for (ap = addrcomps; *ap; ap++) {
***************
*** 277,288 ****
(void) fclose (out);
free (scanl);
! while (cptr = *savecomp++)
free (cptr -> c_text);
! for (nxtbuf = compbuffers, i = ncomps; i--; )
free (*nxtbuf++);
free ((char *) compbuffers);
! free ((char *) used_buf_fp);
}
/* */
--- 274,285 ----
(void) fclose (out);
free (scanl);
! for (nxtbuf = compbuffers, i = ncomps; cptr = *savecomp++; nxtbuf++, i--)
free (cptr -> c_text);
! while (i-- > 0)
free (*nxtbuf++);
free ((char *) compbuffers);
! free ((char *) used_buf);
}
/* */
*** ../mh-6.7-dist/./uip/rmf.c Thu Apr 12 13:29:37 1990
--- ./uip/rmf.c Mon Nov 5 12:22:06 1990
***************
*** 1,6 ****
/* rmf.c - remove a folder */
#ifndef lint
! static char ident[] = "@(#)$Id: rmf.c,v 2.2 90/04/05 14:57:11 sources Exp $";
#endif lint
#include "../h/mh.h"
--- 1,6 ----
/* rmf.c - remove a folder */
#ifndef lint
! static char ident[] = "@(#)$Id: rmf.c,v 2.3 90/11/05 12:22:03 mh Exp $";
#endif lint
#include "../h/mh.h"
***************
*** 13,19 ****
#define INTRSW 0
"interactive", 0,
#define NINTRSW 1
! "nointerative", 0,
#define HELPSW 2
"help", 4,
--- 13,19 ----
#define INTRSW 0
"interactive", 0,
#define NINTRSW 1
! "nointeractive", 0,
#define HELPSW 2
"help", 4,
*** ../mh-6.7-dist/./uip/rcvtty.c Thu Apr 12 13:29:36 1990
--- ./uip/rcvtty.c Mon Nov 5 13:06:03 1990
***************
*** 1,6 ****
/* rcvtty.c - a rcvmail program (a lot like rcvalert) handling IPC ttys */
#ifndef lint
! static char ident[] = "@(#)$Id: rcvtty.c,v 1.5 90/04/05 15:02:11 sources Exp $";
#endif lint
#ifndef BSD42
--- 1,6 ----
/* rcvtty.c - a rcvmail program (a lot like rcvalert) handling IPC ttys */
#ifndef lint
! static char ident[] = "@(#)$Id: rcvtty.c,v 1.6 90/11/05 13:05:54 mh Exp $";
#endif lint
#ifndef BSD42
***************
*** 18,24 ****
/* */
#define SCANFMT \
! "%2(hour{dtimenow}):%02(min{dtimenow}): %5(size) %<{encrypted}E%>\
%<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%> \
%{subject}%<{body}<<%{body}>>%>"
--- 18,24 ----
/* */
#define SCANFMT \
! "%2(hour{dtimenow}):%02(min{dtimenow}): %<(size)%5(size) %>%<{encrypted}E%>\
%<(mymbox{from})To:%14(friendly{to})%|%17(friendly{from})%> \
%{subject}%<{body}<<%{body}>>%>"
*** ../mh-6.7-dist/./uip/dropsbr.c Thu Apr 12 13:29:27 1990
--- ./uip/dropsbr.c Mon Nov 5 13:26:59 1990
***************
*** 1,6 ****
/* dropsbr.c - write to a mailbox */
#ifndef lint
! static char ident[] = "@(#)$Id: dropsbr.c,v 1.11 90/04/05 15:01:09 sources Exp $";
#endif lint
#include <stdio.h>
--- 1,6 ----
/* dropsbr.c - write to a mailbox */
#ifndef lint
! static char ident[] = "@(#)$Id: dropsbr.c,v 1.12 90/11/05 13:26:50 mh Exp $";
#endif lint
#include <stdio.h>
***************
*** 408,413 ****
--- 408,418 ----
if (*cp++ == '\n')
size++;
}
+ if (write (md, "\n", 1) != 1) {
+ (void) fclose (fp);
+ return NOTOK;
+ }
+ if (mapping) size += 2;
(void) fclose (fp);
(void) lseek (fd, 0L, 2);
*** ../mh-6.7-dist/./support/pop/popser.c Thu Apr 12 13:29:23 1990
--- ./support/pop/popser.c Fri Nov 16 16:06:38 1990
***************
*** 1,6 ****
/* popser.c - the POP service */
#ifndef lint
! static char ident[]="@(#)$Id: popser.c,v 1.13 90/04/09 09:45:18 sources Exp Locker: sources $";
#endif
#include "../h/mh.h"
--- 1,6 ----
/* popser.c - the POP service */
#ifndef lint
! static char ident[]="@(#)$Id: popser.c,v 1.16 90/11/16 14:56:38 mh Exp $";
#endif
#include "../h/mh.h"
***************
*** 40,48 ****
--- 40,54 ----
extern char myhost[];
extern char *myname;
+ #ifndef POP2
static enum state {
auth1, auth2, trans, update, halt, error
} mystate;
+ #else
+ static enum state {
+ auth1, auth2, trans, mbox, item, ack, update, halt, error
+ } mystate;
+ #endif
static int user (), pass ();
***************
*** 59,64 ****
--- 65,73 ----
int xtnd ();
#endif BPOP
static int quit ();
+ #ifdef POP2
+ static int helo (), rdp2 (), acks (), ack2 (), fold (), nack ();
+ #endif POP2
static struct vector {
char *v_cmd;
***************
*** 87,95 ****
#ifdef BPOP
"xtnd", 1, 2, xtnd, trans, trans, trans,
#endif BPOP
-
"quit", 0, 0, quit, trans, halt, halt,
NULL
};
--- 96,121 ----
#ifdef BPOP
"xtnd", 1, 2, xtnd, trans, trans, trans,
#endif BPOP
"quit", 0, 0, quit, trans, halt, halt,
+ #ifdef POP2
+ "helo", 2, 2, helo, auth1, mbox, auth1,
+
+ "fold", 1, 1, fold, mbox, mbox, mbox,
+ "quit", 0, 0, quit, mbox, halt, halt,
+ "read", 0, 1, rdp2, mbox, item, error,
+
+ "fold", 1, 1, fold, item, mbox, mbox,
+ "read", 0, 1, rdp2, item, item, error,
+ "quit", 0, 0, quit, item, halt, halt,
+ "retr", 0, 0, retrieve, item, ack, error,
+
+ "acks", 0, 0, ack2, ack, item, error,
+ "ackd", 0, 0, ack2, ack, item, error,
+ "nack", 0, 0, rdp2, ack, item, error,
+ "quit", 0, 0, NULL, ack, halt, halt,
+
+ #endif POP2
NULL
};
***************
*** 97,102 ****
--- 123,131 ----
/* */
+ #ifdef POP2
+ static int pop2 = NOTOK; /* current pop2 msg, or NOTOK if pop3 */
+ #endif POP2
#ifdef DPOP
static int pop_uid;
static int pop_gid;
***************
*** 166,174 ****
--- 195,209 ----
long lseek ();
char *crypt ();
+ #ifdef POPUUMBOX
+ #define MBX_READ pmbx_read
static int pmbx_read ();
static char *p_copy(), *p_copyin(), *p_nextword();
static p_cmatch(), p_isdate(), p_ishead(), p_parse(), any();
+ #else
+ #define MBX_READ mbx_read
+ extern int mbx_read ();
+ #endif
static int setup(), setupaux(), read_map(), read_file(), pmbx_size();
static int quitaux(), quitfile(), respond(), getline();
***************
*** 311,316 ****
--- 346,360 ----
}
/* */
+ #ifdef POP2
+ static int helo (vec) /* sort of "user" and "pass" */
+ register char **vec;
+ {
+ pop2 = 0; /* now we're talkin' pop2! */
+ make_lower (username, vec[1]); /* helo user pass */
+ return pass (++vec); /* user pass */
+ }
+ #endif
static int user (vec)
register char **vec;
***************
*** 565,573 ****
if (setupaux (guest) == NOTOK)
return NOTOK;
return respond (OK,
nmsgs ? "maildrop has %d message%s (%d octets)" : "maildrop empty",
! nmsgs, nmsgs != 1 ? "s" : NULL, Msgs[0].m_size);
}
/* */
--- 609,625 ----
if (setupaux (guest) == NOTOK)
return NOTOK;
+ #ifdef POP2
+ if (pop2 != NOTOK) { /* in response to pop2 "helo" */
+ pop2 = nmsgs > 0 ? 1 : 0;
+ return respond ('#', "%d message%s (%d octets)",
+ nmsgs, nmsgs != 1 ? "s" : "", Msgs[0].m_size);
+ }
+ else
+ #endif POP2
return respond (OK,
nmsgs ? "maildrop has %d message%s (%d octets)" : "maildrop empty",
! nmsgs, nmsgs != 1 ? "s" : "", Msgs[0].m_size);
}
/* */
***************
*** 682,688 ****
padvise (NULLCP, LOG_DEBUG, "read_file (%ld, %d)",
pos, msgp);
! if ((i = pmbx_read (dp, pos, &rp, debug)) <= 0)
return (msgp - 1);
m_gMsgs ((msgp - 1) + i);
--- 734,740 ----
padvise (NULLCP, LOG_DEBUG, "read_file (%ld, %d)",
pos, msgp);
! if ((i = MBX_READ (dp, pos, &rp, debug)) <= 0)
return (msgp - 1);
m_gMsgs ((msgp - 1) + i);
***************
*** 753,758 ****
--- 805,884 ----
}
+ #ifdef POP2
+ static int rdp2 (vec) /* always returns OK */
+ char **vec;
+ {
+ if (vec[1]) {
+ if ((pop2 = atoi (vec[1])) <= 0)
+ pop2 = 0;
+ }
+ else if (pop2 == 0)
+ return NOTOK; /* close 'em down */
+
+ if (pop2 <= 0 || pop2 > nmsgs) {
+ pop2 = 0;
+ return respond ('=', "0 no message");
+ }
+ if (Msgs[pop2].m_flags & MDELE) {
+ pop2 = 0;
+ return respond ('=', "0 message %d is deleted", pop2);
+ }
+
+ return respond ('=', "%d (message %d)", Msgs[pop2].m_size, pop2);
+ }
+
+ static int ack2 (vec)
+ char **vec;
+ {
+ if (strcmp (vec[0], "ackd") == 0) {
+ Msgs[pop2].m_flags |= MDELE; /* ignored later if MREAD */
+ Msgs[0].m_size -= Msgs[pop2].m_size;
+ dmsgs++;
+ }
+
+ if (pop2) { /* a current msg */
+ rmsgs++; /* mark this one as read */
+ if (++pop2 > nmsgs)
+ pop2 = -1; /* let rdp2 reset */
+ else if (Msgs[pop2].m_flags & MDELE)
+ pop2 = -1; /* let rdp2 reset */
+ if (pop2 > Msgs[0].m_last)
+ Msgs[0].m_last = pop2;
+ }
+ return rdp2 (vec); /* vec = { "acks", 0 } */
+ }
+
+ static int fold (vec)
+ register char **vec;
+ {
+ pop2 = 0;
+
+ #ifdef notdef
+
+ /* This might work, or it might be a huge security hole. For my purpose,
+ * it doesn't need to work, so I'm not going to make sure it's OK.
+ * 16Nov90/JLR
+ */
+
+ if (quitaux (NULLVP) == NOTOK)
+ return respond ('#', "0 unable to close folder");
+
+ (void) sprintf (maildrop, vec[1]);
+ if (setupaux (access (maildrop, 2) ? 1 : 0) == NOTOK)
+ return respond ('#', "0 unable to read %s", maildrop);
+
+ pop2 = nmsgs > 0 ? 1 : 0;
+ return respond ('#', "%d message%s in %s (%d octets)",
+ nmsgs, nmsgs != 1 ? "s" : "", maildrop, Msgs[0].m_size);
+
+ #endif
+
+ respond ('#', "0 unable to change folders");
+ return NOTOK;
+ }
+ #endif POP2
+
static int list (vec)
register char **vec;
{
***************
*** 773,779 ****
}
(void) respond (OK, "%d message%s (%d octets)",
! nmsgs - dmsgs, nmsgs - dmsgs != 1 ? "s" : NULL,
Msgs[0].m_size);
for (i = 1; i <= nmsgs; i++)
if (!(Msgs[i].m_flags & MDELE))
--- 899,905 ----
}
(void) respond (OK, "%d message%s (%d octets)",
! nmsgs - dmsgs, nmsgs - dmsgs != 1 ? "s" : "",
Msgs[0].m_size);
for (i = 1; i <= nmsgs; i++)
if (!(Msgs[i].m_flags & MDELE))
***************
*** 798,803 ****
--- 924,934 ----
register char *cp;
char buffer[BUFSIZ];
+ #ifdef POP2
+ if (pop2 == 0)
+ return NOTOK;
+ else if (pop2 == NOTOK) {
+ #endif
if ((i = atoi (vec[1])) <= 0 || i > nmsgs)
return respond (NOTOK, "no such message: \"%s\"", vec[1]);
if (Msgs[i].m_flags & MDELE)
***************
*** 804,809 ****
--- 935,945 ----
return respond (NOTOK, "message %d is deleted", i);
(void) respond (OK, "%d octets", Msgs[i].m_size);
+ #ifdef POP2
+ }
+ else /* if called by pop2, vec = { "retr", 0 } */
+ i = pop2;
+ #endif
for ((void) fseek (dp, pos = Msgs[i].m_start, 0);
fgets (buffer, sizeof buffer, dp) != NULL && pos < Msgs[i].m_stop;
***************
*** 812,817 ****
--- 948,956 ----
*cp = NULL;
multiline ("%s", buffer);
}
+ #ifdef POP2
+ if (pop2 == NOTOK) { /* then multiend */
+ #endif
multiend ();
if (i > Msgs[0].m_last) {
***************
*** 818,823 ****
--- 957,965 ----
Msgs[0].m_last = i;
rmsgs++;
}
+ #ifdef POP2
+ }
+ #endif
return OK;
}
***************
*** 1147,1153 ****
return respond (OK,
n ? "%s signing off (%d message%s, %d octets left)"
: "%s signing off (maildrop empty)",
! server, n - d, n - d != 1 ? "s" : NULL, Msgs[0].m_size);
}
--- 1289,1295 ----
return respond (OK,
n ? "%s signing off (%d message%s, %d octets left)"
: "%s signing off (maildrop empty)",
! server, n - d, n - d != 1 ? "s" : "", Msgs[0].m_size);
}
***************
*** 1314,1323 ****
char buffer[BUFSIZ];
bp = buffer;
! bp += strlen (sprintf (bp, "%s%s", code == OK ? "+OK" : "-ERR",
! fmt ? " " : NULL));
! if (fmt)
! bp += strlen (sprintf (bp, fmt, a, b, c, d));
putline (buffer, output);
return code;
--- 1456,1482 ----
char buffer[BUFSIZ];
bp = buffer;
! #ifndef POP2
! (void) sprintf (bp, "%s%s", code == OK ? "+OK" : "-ERR", fmt ? " " : "");
! bp += strlen (bp);
! #else
! switch (code) {
! case OK:
! case NOTOK:
! (void) sprintf (bp, "%s%s", code == OK ? "+OK" : "-ERR",
! fmt ? " " : "");
! bp += strlen (bp);
! break;
!
! default: /* only happens in pop2 */
! *bp++ = code;
! code = OK;
! }
! #endif
! if (fmt) {
! (void) sprintf (bp, fmt, a, b, c, d);
! bp += strlen (bp);
! }
putline (buffer, output);
return code;
***************
*** 1457,1464 ****
--- 1616,1638 ----
* INET: steved@longs.LANCE.ColoState.Edu, dempsey@handel.CS.ColoState.Edu
* boulder!ccncsu!longs.LANCE.ColoState.Edu!steved, ...!ncar!handel!dempsey
*/
+ /* From: Jim Reid <jim@computer-science.strathclyde.ac.UK>
+ *
+ * MH-6.7 does not support MMDF-style mailboxes with POP as claimed. It
+ * appears that when code was added to popser.c to support UNIX-style
+ * mailboxes, the old behaviour was lost. i.e. The new popd worked with
+ * UNIX-style mailboxes, but not MMDF ones. Users would get "format error"
+ * error messages if they tried to inc a remote MMDF-style mailbox because
+ * the pop daemon didn't want to know or like the MMDF message delimiters.
+ */
+ /* So... Now there's an incredible hack in mhconfig.c to define POPUUMBOX
+ * in support/pop/Makefile if we're using Sendmail. This causes this
+ * UUCP-mbox reading code to be used here. Ugh. 05Nov90/JLR
+ */
+
/* */
+ #ifdef POPUUMBOX
/* from dropsbr.c - read from a mailbox - pop server version */
/* ALMOST IDENTICAL to mbx_read */
***************
*** 1863,1865 ****
--- 2037,2040 ----
return(1);
return(0);
}
+ #endif
*** ../mh-6.7-dist/./sbr/m_sync.c Thu Apr 12 13:29:03 1990
--- ./sbr/m_sync.c Mon Nov 5 11:47:29 1990
***************
*** 1,4 ****
--- 1,7 ----
/* m_sync.c - synchronize message sequences */
+ #ifndef lint
+ static char ident[] = "@(#)$Id: m_sync.c,v 1.6 90/11/05 11:46:34 mh Exp $";
+ #endif lint
#include "../h/mh.h"
#include <stdio.h>
***************
*** 60,67 ****
continue;
if (fp == NULL) {
if ((fp = fopen (seq, "w")) == NULL
! && unlink (seq) != NOTOK
! && (fp = fopen (seq, "w")) == NULL) {
admonish (attr, "unable to write");
goto priv;
}
--- 63,70 ----
continue;
if (fp == NULL) {
if ((fp = fopen (seq, "w")) == NULL
! && (unlink (seq) == NOTOK ||
! (fp = fopen (seq, "w")) == NULL)) {
admonish (attr, "unable to write");
goto priv;
}
*** ../mh-6.7-dist/./sbr/addrsbr.c Thu Apr 12 13:28:50 1990
--- ./sbr/addrsbr.c Mon Nov 5 12:26:57 1990
***************
*** 1,4 ****
--- 1,7 ----
/* addrsbr.c - parse addresses 822-style */
+ #ifndef lint
+ static char ident[] = "@(#)$Id: addrsbr.c,v 1.7 90/11/05 12:26:41 mh Exp $";
+ #endif lint
#include "../h/mh.h"
#include "../h/addrsbr.h"
***************
*** 830,835 ****
--- 833,840 ----
}
#else not BERK
for (mp = &mq; mp = mp -> m_next;) {
+ if (np -> m_mbox == NULL)
+ continue;
if ((len = strlen (cp = np -> m_mbox))
< (i = strlen (pp = mp -> m_mbox)))
continue;
***************
*** 854,859 ****
--- 859,866 ----
if (mp -> m_nohost)
return 1;
+ if (np -> m_host == NULL)
+ continue;
if ((len = strlen (cp = np -> m_host))
< (i = strlen (pp = mp -> m_host)))
continue;
*** ../mh-6.7-dist/./sbr/m_getfld.c Thu Apr 12 13:29:01 1990
--- ./sbr/m_getfld.c Wed Apr 18 13:48:20 1990
***************
*** 1,4 ****
--- 1,7 ----
/* m_getfld.c - read/parse a message */
+ #ifndef lint
+ static char ident[] = "@(#)$Id: m_getfld.c,v 1.8 90/04/18 13:48:12 sources Exp $";
+ #endif lint
#include "../h/mh.h"
#include <stdio.h>
***************
*** 542,550 ****
--- 545,557 ----
*/
return 1;
+ #ifdef notdef
(void) fseek (iob, (long)(pos-1), 0);
if (iob->_cnt <= 0)
_filbuf(iob);
+ #else
+ (void) fseek (iob, pos, 0);
+ #endif /* !notdef */
return 0;
}
*** ../mh-6.7-dist/./conf/mhconfig.c Thu Apr 12 13:27:24 1990
--- ./conf/mhconfig.c Mon Nov 5 16:24:58 1990
***************
*** 1,7 ****
/* mhconfig.c - configure MH */
/* cc [-DSYS5] mhconfig.c -o mhconfig */
#ifndef lint
! static char ident[] = "@(#)$Id: mhconfig.c,v 2.23 90/04/08 10:57:33 sources Exp $";
#endif lint
#include <ctype.h>
--- 1,7 ----
/* mhconfig.c - configure MH */
/* cc [-DSYS5] mhconfig.c -o mhconfig */
#ifndef lint
! static char ident[] = "@(#)$Id: mhconfig.c,v 2.26 90/11/05 16:24:55 mh Exp $";
#endif lint
#include <ctype.h>
***************
*** 420,425 ****
--- 420,428 ----
fprintf (fp, "/^@BEGIN: SENDMTSHACK$/,/^@END: SENDMTSHACK$/d\n");
break;
}
+ /* special hack for support/pop/popser.c */
+ fprintf (fp, "s%%@(POPUUMBOX)%%%s%%g\n",
+ mtsnum == sendmail ? "-DPOPUUMBOX" : "");
if (bsd43) /* for sgid(tty)-rcvtty */
fprintf (fp, "/^@BEGIN: BSD43$/d\n/^@END: BSD43$/d\n");
*** ../mh-6.7-dist/./conf/mh-gen.8 Thu Apr 12 13:27:24 1990
--- ./conf/mh-gen.8 Wed Nov 21 09:58:36 1990
***************
*** 1,2 ****
! .\" @(#)$Id: mh-gen.8,v 2.48 90/04/09 13:27:27 sources Exp $
.\" uneven inter-word spacing (nroff line adjusting) hampers readability
--- 1,2 ----
! .\" @(#)$Id: mh-gen.8,v 2.50 90/11/21 09:27:52 mh Exp Locker: mh $
.\" uneven inter-word spacing (nroff line adjusting) hampers readability
***************
*** 224,225 ****
--- 224,226 ----
or, \*(lqmh\*(rq to have \fIMH\fR as the transport system.
+
On UNIX systems supporting TCP/IP networking via sockets
***************
*** 229,234 ****
\fISendMail\fR.
! The \*(lq/smtp\*(rq suffix is described in detail in the \fIAdministrator's
! Guide\fR.
! Hence,
! for TCP/IP UNIX systems,
the \*(lq/smtp\*(rq suffix to either \*(lqsendmail\*(rq or \*(lqmmdf2\*(rq is
--- 230,232 ----
\fISendMail\fR.
! Hence, for TCP/IP UNIX systems,
the \*(lq/smtp\*(rq suffix to either \*(lqsendmail\*(rq or \*(lqmmdf2\*(rq is
***************
*** 235,236 ****
--- 233,237 ----
the preferred MTS configuration.
+ The \*(lq/smtp\*(rq suffix is described in detail in the \fIAdministrator's
+ Guide\fR; be sure to set \*(lqservers:\*(rq as described in
+ \fImh\-tailor\fR\0(8) if you use this option.
***************
*** 246,248 ****
If \*(lqpop\*(rq (formerly \*(lqpopbboards:\ on\*(rq),
! include support for the UCI BBoards facility via the POP service;
this setting requires \*(lqpop:\ on\*(rq.
--- 247,249 ----
If \*(lqpop\*(rq (formerly \*(lqpopbboards:\ on\*(rq),
! include support for the UCI BBoards facility via the POP3 service;
this setting requires \*(lqpop:\ on\*(rq.
***************
*** 261,263 ****
To read remote BBoards,
! the usual configuration would have \fIbbc\fR talk to a \fIPOP\fR or
\fINNTP\fR server.
--- 262,264 ----
To read remote BBoards,
! the usual configuration would have \fIbbc\fR talk to a \fIPOP3\fR or
\fINNTP\fR server.
***************
*** 290,294 ****
you intend to use POP.)
! If POP is enabled, there are two additional options which are of interest:
! \*(lqRPOP\*(rq and \*(lqDPOP\*(rq.
! The former indicates that support for the UNIX variant of POP,
RPOP, which uses privileged sockets for authentication be enabled.
--- 291,295 ----
you intend to use POP.)
! If POP is enabled, there are three additional options which are of interest:
! \*(lqRPOP\*(rq, \*(lqDPOP\*(rq and \*(lqPOP2\*(rq.
! The first indicates that support for the UNIX variant of POP,
RPOP, which uses privileged sockets for authentication be enabled.
***************
*** 298,300 ****
and instead have their own separate database (another major win).
! Both of these options can be enabled via an \*(lqoptions\*(rq directive in the
\fIMH\fR configuration file.
--- 299,304 ----
and instead have their own separate database (another major win).
! The \*(lqPOP2\*(rq option indicates that the \fIMH\fP POP daemon should
! speak the older POP2 protocol in addition to the \fIMH\fP POP3 protocol \-
! a major win.
! All of these options can be enabled via an \*(lqoptions\*(rq directive in the
\fIMH\fR configuration file.
***************
*** 500,501 ****
--- 504,516 ----
.ti -.5i
+ POP2
+ .br
+ Have the POP daemon understand the older
+ POP2 protocol as well as the \fIMH\fP POP3 protocol \- a major win.
+ The POP daemon auto-magically
+ determines which POP protocol your client is using.
+ If you're enabling POP service,
+ there's no reason not to enable this option as well.
+ See also \fIPOPSERVICE\fR.
+
+ .ti -.5i
POPSERVICE
***************
*** 503,507 ****
The port name the \fIMH\fP POP will use. For historical reasons,
! this defaults to \*(lqpop\*(rq. The \fIMH\fP POP protocol
! (POP version 3) has finally been assigned its own port number (110),
! which differs from the original POP (version 1) port number (109).
To have \fIMH\fP POP use the new assigned port number,
--- 518,524 ----
The port name the \fIMH\fP POP will use. For historical reasons,
! this defaults to \*(lqpop\*(rq.
! In 1987, the \fIMH\fP POP protocol
! (POP version 3) was published as RFC1081 and
! was assigned its own port number (110),
! which differs from the original POP (version 1 and 2) port number (109).
To have \fIMH\fP POP use the new assigned port number,
***************
*** 510,511 ****
--- 527,530 ----
and server hosts as \*(lq110/tcp\*(rq.
+ If you enable \fIPOP2\fP, you can safely leave this undefined unless
+ you are using POP3 clients besides \fIMH\fP.
*** ../mh-6.7-dist/./conf/makefiles/mtsM Thu Apr 12 13:27:21 1990
--- ./conf/makefiles/mtsM Mon Nov 5 12:08:17 1990
***************
*** 4,6 ****
# @(MHWARNING)
! # @(#)$Id: mtsM,v 2.2 90/04/05 15:17:58 sources Exp $
##############################################################################
--- 4,6 ----
# @(MHWARNING)
! # @(#)$Id: mtsM,v 2.3 90/04/18 13:47:30 sources Exp $
##############################################################################
***************
*** 51,53 ****
! clean:; for d in $(DIRS); do (cd $$d; $(MAKE) clean); done
--- 51,54 ----
! clean:; -rm -f $(LIB) $(LLIB)
! for d in $(DIRS); do (cd $$d; $(MAKE) clean); done
*** ../mh-6.7-dist/./conf/makefiles/support/pop Thu Apr 12 13:27:22 1990
--- ./conf/makefiles/support/pop Mon Nov 5 16:06:05 1990
***************
*** 4,6 ****
# @(MHWARNING)
! # @(#)$Id: pop,v 2.5 90/04/05 15:16:16 sources Exp $
##############################################################################
--- 4,6 ----
# @(MHWARNING)
! # @(#)$Id: pop,v 2.7 90/11/05 16:06:03 mh Exp $
##############################################################################
***************
*** 11,13 ****
LIBDIR = $(DESTDIR)@(MHETCPATH)
! OPTIONS = @(MHOPTIONS) -I..
LDOPTIONS= @(LDOPTIONS)
--- 11,13 ----
LIBDIR = $(DESTDIR)@(MHETCPATH)
! OPTIONS = @(MHOPTIONS) @(POPUUMBOX) -I..
LDOPTIONS= @(LDOPTIONS)
*** ../mh-6.7-dist/./conf/examples/uci Thu Apr 12 13:27:15 1990
--- ./conf/examples/uci Mon Apr 16 15:49:23 1990
***************
*** 24,26 ****
ranlib on
! sharedlib on
slibdir /usr/local/lib
--- 24,26 ----
ranlib on
! sharedlib off
slibdir /usr/local/lib
*** ../mh-6.7-dist/./conf/doc/mh-mts.rf Thu Apr 12 13:27:09 1990
--- ./conf/doc/mh-mts.rf Wed Nov 21 10:09:34 1990
***************
*** 1,3 ****
.\" @(MHWARNING)
! .\" @(#)$Id: mh-mts.rf,v 1.6 90/04/05 15:08:37 sources Exp $
.SC MH\-MTS 8
--- 1,3 ----
.\" @(MHWARNING)
! .\" @(#)$Id: mh-mts.rf,v 1.7 90/11/21 10:09:32 mh Exp $
.SC MH\-MTS 8
***************
*** 55,56 ****
--- 55,58 ----
this approach can be tolerant of faults.
+ Be sure to set \*(lqservers:\*(rq as described in
+ mh\-tailor(8) if you use this option.
*** ../mh-6.7-dist/./conf/config/mts.c Thu Apr 12 13:27:04 1990
--- ./conf/config/mts.c Mon Nov 5 12:06:51 1990
***************
*** 1,4 ****
--- 1,7 ----
/* mts.c - definitions for the mail transport system */
+ #ifndef lint
+ static char ident[] = "@(#)$Id: mts.c,v 2.6 90/11/05 12:06:39 mh Exp $";
+ #endif lint
/* LINTLIBRARY */
***************
*** 485,498 ****
continue;
*cp = NULL;
}
- /*
- * If the fullname contains any .'s, quote it
- */
- if (index(fullname, '.')) {
- char tmp[BUFSIZ];
- sprintf (tmp, "\"%s\"", fullname);
- strcpy (fullname, tmp);
- }
if (MMailids == 0 || *np == NULL) {
(void) strcpy (username, pw -> pw_name);
fullname[0] = NULL;
--- 488,493 ----
***************
*** 499,504 ****
--- 494,504 ----
}
if ((cp = getenv ("SIGNATURE")) && *cp)
(void) strcpy (fullname, cp);
+ if (index(fullname, '.')) { /* quote any .'s */
+ char tmp[BUFSIZ];
+ sprintf (tmp, "\"%s\"", fullname);
+ strcpy (fullname, tmp);
+ }
return username;
}